home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok89 / gtb-oberon / source / gadtoolsbox.mod next >
Text File  |  1993-11-04  |  15KB  |  482 lines

  1. (* ------------------------------------------------------------------------
  2.   :Program.       GadToolsBox
  3.   :Contents.      Interface to Jan van den Baard's Library
  4.   :Author.        Kai Bolay [kai]
  5.   :Address.       Snail-Mail:              E-Mail:
  6.   :Address.       Hoffmannstraße 168       UUCP: kai@amokle.stgt.sub.org
  7.   :Address.       D-7250 Leonberg 1        FIDO: 2:2407/106.3
  8.   :History.       v1.0 [kai] 13-Feb-93 (translated from C)
  9.   :History.       v1.1 [kai] 28-Feb-93 (fixed reserved-Bug GadToolsConfig)
  10.   :History.       v1.1 [kai] 28-Feb-93 (windowFlags now LONGSET)
  11.   :History.       v1.2 [kai] 29-Feb-93 (FreeWindows now uses VAR parameter)
  12.   :Copyright.     FD
  13.   :Language.      Oberon
  14.   :Translator.    AMIGA OBERON v3.01d
  15. ------------------------------------------------------------------------ *)
  16. MODULE GadToolsBox;
  17.  
  18. (* using..
  19. forms.h      (Release: 1.0, Revision: 38.10)
  20. prefs.h      (Release: 1.0, Revision: 38.3)
  21. gtxbase.h    (Release: 1.0, Revision: 38.3)
  22. gui.h        (Release: 1.0, Revision: 38.6)
  23. hotkey.h     (Release: 1.0, Revision: 38.5)
  24. textclass.h  (Release: 1.0, Revision: 38.5)
  25. gtx_protos.h (Release: 1.0, Revision: 38.8)
  26. gtx_lib.fd   (Release: ?.?, Revision: 38.8)
  27. *)
  28.  
  29. IMPORT
  30.   e: Exec, g: Graphics, d: Dos, I: Intuition, gt: GadTools, u: Utility,
  31.   nf: NoFragLib,
  32.   y: SYSTEM;
  33.  
  34. CONST
  35.   (* GadToolsBox FORM identifiers *)
  36.   idGXMN* = y.VAL (LONGINT, "GXMN");
  37.   idGXTX* = y.VAL (LONGINT, "GXTX");
  38.   idGXBX* = y.VAL (LONGINT, "GXBX");
  39.   idGXGA* = y.VAL (LONGINT, "GXGA");
  40.   idGXWD* = y.VAL (LONGINT, "GXWD");
  41.   idGXUI* = y.VAL (LONGINT, "GXUI");
  42.  
  43.   (* GadToolsBox chunk identifiers. *)
  44.   idMEDA* = y.VAL (LONGINT, "MEDA");
  45.   idITXT* = y.VAL (LONGINT, "ITXT");
  46.   idBBOX* = y.VAL (LONGINT, "BBOX");
  47.   idGADA* = y.VAL (LONGINT, "GADA");
  48.   idWDDA* = y.VAL (LONGINT, "WDDA");
  49.   idGGUI* = y.VAL (LONGINT, "GGUI");
  50.  
  51.   idVERS* = y.VAL (LONGINT, "VERS");
  52.  
  53.   (* Version (ID_VERS) chunk... *)
  54. TYPE
  55.   VERSIONPtr* = UNTRACED POINTER TO VERSION;
  56.   VERSION* = STRUCT
  57.     version*: INTEGER;
  58.     flags*: SET;
  59.     reserved: ARRAY 4 OF LONGINT;
  60.   END;
  61.  
  62.   (* NewMenu (ID_MEDA) chunk... *)
  63. CONST
  64.   MaxMenuTitle* = 80;
  65.   MaxMenuLabel* = 34;
  66.   MaxShortcut* = 2;
  67.  
  68.   MenuVersion* = 0;
  69. TYPE
  70.   MENUDATAPtr* =  UNTRACED POINTER TO MENUDATA;
  71.   MENUDATA* = STRUCT
  72.     newMenu*: gt.NewMenu;
  73.     title*: ARRAY MaxMenuTitle OF CHAR;
  74.     label*: ARRAY MaxMenuLabel OF CHAR;
  75.     shortCut*: ARRAY MaxShortcut OF CHAR;
  76.     flags*: SET;
  77.   END;
  78.  
  79.   (* IntuiText (ID_ITXT) chunk... *)
  80. CONST
  81.   MaxTextLength* = 80;
  82.   ITxtVersion* = 0;
  83. TYPE
  84.   ITEXTDATAPtr* = UNTRACED POINTER TO ITEXTDATA;
  85.   ITEXTDATA* = STRUCT
  86.     iText*: I.IntuiText;
  87.     text*: ARRAY MaxTextLength OF CHAR;
  88.   END;
  89.  
  90.   (* BevelBox (ID_BBOX) chunk... *)
  91. CONST
  92.   BBoxVersion* = 0;
  93. TYPE
  94.   BBOXDATAPtr* = UNTRACED POINTER TO BBOXDATA;
  95.   BBOXDATA* = STRUCT
  96.     left*: INTEGER;
  97.     top*: INTEGER;
  98.     width*: INTEGER;
  99.     height*: INTEGER;
  100.     flags*: SET;
  101.   END;
  102. CONST
  103.   (* BevelBox flag bits *)
  104.   recessed* = 0;
  105.   dropBox* = 1;
  106.  
  107.   (* NewGadget (ID_GADA) chunk... *)
  108. CONST
  109.   MaxGadgetText* = 80;
  110.   MaxGadgetLabel* = 34;
  111.  
  112.   GadgetVersion* = 0;
  113. TYPE
  114.   GADGETDATAPtr* = UNTRACED POINTER TO GADGETDATA;
  115.   GADGETDATA* = STRUCT
  116.     newGadget*: gt.NewGadget;
  117.     gadgetText*: ARRAY MaxGadgetText OF CHAR;
  118.     gadgetLabel*: ARRAY MaxGadgetLabel OF CHAR;
  119.     flags*: SET;
  120.     kind*: INTEGER;
  121.     numTags*: INTEGER;
  122.     reserved: ARRAY 4 OF LONGINT;
  123.   END;
  124.   (* NewGadget flag bits *)
  125. CONST
  126.   IsLocked* = 5;
  127.   NeedLock* = 6;
  128.  
  129.   (* Window (ID_WDDA) chunk... *)
  130. CONST
  131.   MaxWindowName   * = 34;
  132.   MaxWindowTitle  * = 80;
  133.   MaxWdScreenTitle* = 80;
  134.  
  135.   WindowVersion   * =  0;
  136. TYPE
  137.   WINDOWDATAPtr* = UNTRACED POINTER TO WINDOWDATA;
  138.   WINDOWDATA* = STRUCT
  139.     name*: ARRAY MaxWindowName OF CHAR;
  140.     title*: ARRAY MaxWindowTitle OF CHAR;
  141.     screenTitle*: ARRAY MaxWdScreenTitle OF CHAR;
  142.     numTags*: INTEGER;
  143.     idCountFrom*: INTEGER;
  144.     idcmp*: LONGSET;
  145.     windowFlags*: LONGSET;
  146.     tagFlags*: LONGSET;
  147.     innerWidth*: INTEGER;
  148.     innerHeight*: INTEGER;
  149.     showTitle*: BOOLEAN;
  150.     mouseQueue*: INTEGER;
  151.     rptQueue*: INTEGER;
  152.     flags*: SET;
  153.     leftBorder*: INTEGER;
  154.     topBorder*: INTEGER;
  155.     reserved: ARRAY 10 OF SHORTINT;
  156.   END;
  157. CONST
  158.   (* Window tag flag bits *)
  159.   InnerWidth     * = 0;
  160.   InnerHeight    * = 1;
  161.   Zoom           * = 2;
  162.   MouseQueue     * = 3;
  163.   RptQueue       * = 4;
  164.   AutoAdjust     * = 5;
  165.   DefaultZoom    * = 6;
  166.   FallBack       * = 7;
  167.  
  168.   (* GUI (ID_GGUI) chunk... *)
  169. CONST
  170.   MaxScreenTitle* = 80;
  171.   FontNameLength* = 128;
  172.   MaxColorSpec* = 33;
  173.   MaxDriPens* = 10;
  174.   MaxMoreDriPens* = 10;
  175.  
  176.   GuiVersion* = 0;
  177. TYPE
  178.   GUIDATAPtr* = UNTRACED POINTER TO GUIDATA;
  179.   GUIDATA* = STRUCT
  180.     flags0*: LONGSET;
  181.     screenTitle*: ARRAY MaxScreenTitle OF CHAR;
  182.     left*: INTEGER;
  183.     top*: INTEGER;
  184.     width*: INTEGER;
  185.     height*: INTEGER;
  186.     depth*: INTEGER;
  187.     displayID*: LONGINT;
  188.     overscan*: INTEGER;
  189.     driPens*: ARRAY MaxDriPens OF INTEGER;
  190.     colors*: ARRAY MaxColorSpec OF I.ColorSpec;
  191.     fontName*: ARRAY FontNameLength OF CHAR;
  192.     font*: g.TextAttr;
  193.     moreDriPens*: ARRAY MaxMoreDriPens OF INTEGER;
  194.     reserved: ARRAY 5 OF LONGINT;
  195.     flags1*: LONGSET;
  196.     stdScreenWidth*: INTEGER;
  197.     stdScreenHeight*: INTEGER;
  198.     activeKind*: INTEGER;
  199.     lastProject*: INTEGER;
  200.     gridX*: INTEGER;
  201.     gridY*: INTEGER;
  202.     offX*: INTEGER;
  203.     offY*: INTEGER;
  204.     reserved1: ARRAY 7 OF INTEGER;
  205.   END;
  206. CONST
  207.   (* GUI gui_Flags0 flag bits *)
  208.   AutoScroll* = 0;
  209.   Workbench * = 1;
  210.   Public    * = 2;
  211.   Custom    * = 3;
  212.  
  213. CONST
  214.   GTBConfigSave* = "ENVARC:GadToolsBox/GadToolsBox.prefs";
  215.   GTBConfigUse * = "ENV:GadToolsBox/GadToolsBox.prefs";
  216.  
  217.   GTBConfigVErsion* =   0;
  218.   MaxUserName     * =  64;
  219.   MaxIconPath     * = 128;
  220.  
  221.   idGTCO          * =  y.VAL (LONGINT, "GTCO");
  222.  
  223. TYPE
  224.   GadToolsConfigPtr* = UNTRACED POINTER TO GadToolsConfig;
  225.   GadToolsConfig* = STRUCT
  226.     configFlags0*: LONGSET;
  227.     configFlags1*: LONGSET;
  228.     crunchBuffer*: INTEGER;
  229.     crunchType*: INTEGER;
  230.     userName*: ARRAY MaxUserName OF CHAR;
  231.     iconPath*: ARRAY MaxIconPath OF CHAR;
  232.     reserved: ARRAY 4 OF LONGINT;
  233.   END;
  234.  
  235.   (* flag definitions for gtc_ConfigFlags0 *)
  236. CONST
  237.   Coordinates* =     0;
  238.   WriteIcon* =       1;
  239.   GZZAdjust* =       2;
  240.   Crunch* =          3;
  241.   CloseWBench* =     4;
  242.   Password* =        5;
  243.   Overwrite* =       6;
  244.   ASLFReq* =         7;
  245.   FontAdapt* =       8;
  246.  
  247. CONST
  248.   GenOpenFont * = 1;
  249.   SysFont *= 2;
  250.  
  251. CONST
  252.   GTXName* = "gadtoolsbox.library";
  253.   GTXVersion* = 38;
  254.  
  255. TYPE
  256.   GTXBasePtr* = UNTRACED POINTER TO GTXBase;
  257.   GTXBase* = STRUCT (libNode*: e.Library)
  258.     (*
  259.     ** These library bases may be extracted from this structure
  260.     ** for your own usage as long as the GTXBase pointer remains
  261.     ** valid.
  262.     **)
  263.     dosBase*: d.DosLibraryPtr;
  264.     intuitionBase*: I.IntuitionBasePtr;
  265.     gfxBase*: g.GfxBasePtr;
  266.     gadToolsBase*: e.LibraryPtr;
  267.     utilityBase*: e.LibraryPtr;
  268.     iffParseBase*: e.LibraryPtr;
  269.     consoleDevice*: e.DevicePtr;
  270.     noFragBase*: e.LibraryPtr;
  271.     (*
  272.     ** The next library pointer is not guaranteed to
  273.     ** be valid! Please check this pointer *before* using
  274.     ** it.
  275.     **)
  276.     ppBase*: e.LibraryPtr;
  277.   END;
  278.  
  279. TYPE
  280.   ExtNewGadgetPtr* = UNTRACED POINTER TO ExtNewGadget;
  281.   ExtGadgetListPtr* = UNTRACED POINTER TO ExtGadgetList;
  282.   ExtGadgetList* = STRUCT (dummy: e.CommonList)
  283.     head*:     ExtNewGadgetPtr;
  284.     tailPred*: ExtNewGadgetPtr;
  285.     tail*:     ExtNewGadgetPtr;
  286.   END;
  287.   ExtNewGadget* = STRUCT (dummy: e.CommonNode)
  288.     succ*: ExtNewGadgetPtr;
  289.     prev*: ExtNewGadgetPtr;
  290.     tags*: u.TagItemPtr;
  291.     reserved0: ARRAY 4 OF SHORTINT;
  292.     newGadget*: gt.NewGadget;
  293.     gadgetLabel*: ARRAY MaxGadgetLabel OF CHAR;
  294.     gadgetText*: ARRAY MaxGadgetText OF CHAR;
  295.     flags*: LONGSET;
  296.     kind*: INTEGER;
  297.     reserved1: ARRAY 138 OF SHORTINT;
  298.   END;
  299.  
  300. TYPE
  301.   ExtNewMenuPtr* = UNTRACED POINTER TO ExtNewMenu;
  302.   ExtMenuListPtr* = UNTRACED POINTER TO ExtMenuList;
  303.   ExtMenuList* = STRUCT  (dummy: e.CommonList)
  304.     head*:     ExtNewMenuPtr;
  305.     tailPred*: ExtNewMenuPtr;
  306.     tail*:     ExtNewMenuPtr;
  307.   END;
  308.   ExtNewMenu* = STRUCT (dummy: e.CommonNode)
  309.     succ*: ExtNewMenuPtr;
  310.     prev*: ExtNewMenuPtr;
  311.     reserved0: ARRAY 6 OF SHORTINT;
  312.     newMenu*: gt.NewMenu;
  313.     menuTitle*: ARRAY MaxMenuTitle OF CHAR;
  314.     menuLabel*: ARRAY MaxMenuLabel OF CHAR;
  315.     reserved1: ARRAY 4 OF SHORTINT;
  316.     items*: ExtMenuListPtr;
  317.     reserved2: ARRAY 2 OF SHORTINT;
  318.     commKey*: ARRAY MaxShortcut OF CHAR;
  319.     reserved3: ARRAY 2 OF SHORTINT;
  320.   END;
  321.  
  322.  
  323. TYPE
  324.   BevelBoxPtr* = UNTRACED POINTER TO BevelBox;
  325.   BevelListPtr* = UNTRACED POINTER TO BevelList;
  326.   BevelList* = STRUCT  (dummy: e.CommonList)
  327.     head*:     BevelBoxPtr;
  328.     tailPred*: BevelBoxPtr;
  329.     tail*:     BevelBoxPtr;
  330.   END;
  331.   BevelBox* = STRUCT (dummy: e.CommonNode)
  332.     succ*: BevelBoxPtr;
  333.     prev*: BevelBoxPtr;
  334.     reserved0: ARRAY 4 OF SHORTINT;
  335.     left*: INTEGER;
  336.     top*: INTEGER;
  337.     width*: INTEGER;
  338.     height*: INTEGER;
  339.     reserved1: ARRAY 32 OF SHORTINT;
  340.     flags*: SET;
  341.   END;
  342.  
  343. TYPE
  344.   ProjectWindowPtr* = UNTRACED POINTER TO ProjectWindow;
  345.   WindowListPtr* = UNTRACED POINTER TO WindowList;
  346.   WindowList* = STRUCT (dummy: e.CommonList)
  347.     head*:     ProjectWindowPtr;
  348.     tailPred*: ProjectWindowPtr;
  349.     tail*:     ProjectWindowPtr;
  350.   END;
  351.   ProjectWindow* = STRUCT (dummy: e.CommonNode)
  352.     succ*: ProjectWindowPtr;
  353.     prev*: ProjectWindowPtr;
  354.     reserved0: ARRAY 6 OF SHORTINT;
  355.     name*: ARRAY MaxWindowName OF CHAR;
  356.     countIDFrom*: INTEGER;
  357.     tags*: u.TagItemPtr;
  358.     leftBorder*: INTEGER;
  359.     topBorder*: INTEGER;
  360.     windowTitle*: ARRAY MaxWindowTitle OF CHAR;
  361.     screenTitle*: ARRAY MaxWdScreenTitle OF CHAR;
  362.     reserved2: ARRAY 192 OF SHORTINT;
  363.     idcmp*: LONGSET;
  364.     windowFlags*: LONGSET;
  365.     windowText*: I.IntuiTextPtr;
  366.     gadgets*: ExtGadgetList;
  367.     menus*: ExtMenuList;
  368.     boxes*: BevelList;
  369.     tagFlags*: LONGSET;
  370.     innerWidth*: INTEGER;
  371.     innerHeight*: INTEGER;
  372.     showTitle*: BOOLEAN;
  373.     reserved3: ARRAY 6 OF SHORTINT;
  374.     mouseQueue*: INTEGER;
  375.     rptQueue*: INTEGER;
  376.     flags*: INTEGER;
  377.   END;
  378.  
  379.   (* tags for the GTX_LoadGUI() routine *)
  380. CONST
  381.   rgTagBase* = u.user+512;
  382.  
  383.   rgGUI          * = rgTagBase+1;
  384.   rgConfig       * = rgTagBase+2;
  385.   rgCConfig      * = rgTagBase+3;
  386.   rgAsmConfig    * = rgTagBase+4;
  387.   rgLibGen       * = rgTagBase+5;
  388.   rgWindowList   * = rgTagBase+6;
  389.   rgValid        * = rgTagBase+7;
  390.   rgPasswordEntry* = rgTagBase+8;
  391.  
  392.   vlfGUI         * = 0;
  393.   vlfConfig      * = 1;
  394.   vlfCConfig     * = 2;
  395.   vlfAsmConfig   * = 3;
  396.   vlfLibGen      * = 4;
  397.   vlfWindowList  * = 5;
  398.  
  399.   ErrorNoMem     * = 1;
  400.   ErrorOpen      * = 2;
  401.   ErrorRead      * = 3;
  402.   ErrorWrite     * = 4;
  403.   ErrorParse     * = 5;
  404.   ErrorPacker    * = 6;
  405.   ErrorPPLib     * = 7;
  406.   ErrorNotGUIFile* = 8;
  407.  
  408.  
  409. (* A _very_ important handle *)
  410. TYPE
  411.   HotKeyHandle* = y.ADDRESS;
  412.  
  413. CONST
  414.   (* Flags for the HKH_SetRepeat tag *)
  415.   srbMX           * = 0;
  416.   srbCycle        * = 1;
  417.   srbSlider       * = 2;
  418.   srbScroller     * = 3;
  419.   srbListView     * = 4;
  420.   srbPalette      * = 5;
  421.  
  422.   (* tags for the hotkey system *)
  423.   hkhTagBase        * = u.user+256;
  424.   hkhKeyMap         * = hkhTagBase+1;
  425.   hkhUseNewButton   * = hkhTagBase+2;
  426.   hkhNewText        * = hkhTagBase+3;
  427.   hkhSetRepeat      * = hkhTagBase+4;
  428.  
  429.   txTagBase         * = u.user+1;
  430.   txtxtAttr         * = txTagBase+1;
  431.   txStyle           * = txTagBase+2;
  432.   txForceTextPen    * = txTagBase+3;
  433.   txUnderscore      * = txTagBase+4;
  434.   txFlags           * = txTagBase+5;
  435.   txText            * = txTagBase+6;
  436.   txNoBox           * = txTagBase+7;
  437.  
  438. VAR
  439.   base*: GTXBasePtr;
  440.  
  441. PROCEDURE TagInArray* {base, -30} (Tag{0}: u.Tag; TagList{8}: ARRAY OF u.TagItem): BOOLEAN;
  442. PROCEDURE SetTagData* {base, -36} (Tag{0}: u.Tag; Data{1}: LONGINT; TagList{8}: ARRAY OF u.TagItem): LONGINT;
  443. PROCEDURE GetNode* {base, -42} (List{8}: e.CommonList; NodeNum{0}: LONGINT): e.CommonNodePtr;
  444. PROCEDURE GetNodeNumber* {base, -48} (List{8}: e.CommonList; Node{9}: e.CommonNode): LONGINT;
  445. PROCEDURE CountNodes* {base, -54} (List{8}: e.CommonList): LONGINT;
  446. PROCEDURE MoveNode* {base, -60} (List{8}: e.CommonList; Node{9}: e.CommonNode; Direction{0}: LONGINT): LONGINT;
  447. PROCEDURE IFFErrToStr* {base, -66} (Error{0}, SkipEndOf{1}: LONGINT): e.STRPTR;
  448. PROCEDURE GetHandleA* {base, -72} (TagList{8}: ARRAY OF u.TagItem): HotKeyHandle;
  449. PROCEDURE GetHandle* {base, -72} (Tags{8}..: u.Tag): HotKeyHandle;
  450. PROCEDURE FreeHandle* {base, -78} (Handle{8}: HotKeyHandle);
  451. PROCEDURE RefreshWindow* {base, -84} (Handle{8}: HotKeyHandle; Window{9}: I.WindowPtr; Requester{10}: I.RequesterPtr);
  452. PROCEDURE CreateGadgetA* {base, -90} (Handle{8}: HotKeyHandle; kind{0}: LONGINT; Pred{9}: I.GadgetPtr; NewGadget{10}: gt.NewGadget; TagList{11}: ARRAY OF u.TagItem): I.GadgetPtr;
  453. PROCEDURE CreateGadget* {base, -90} (Handle{8}: HotKeyHandle; kind{0}: LONGINT; Pred{9}: I.GadgetPtr; NewGadget{10}: gt.NewGadget; Tags{11}..: u.Tag): I.GadgetPtr;
  454. PROCEDURE RawToVanilla* {base, -96} (Handle{8}: HotKeyHandle; Code{0}, Qualifier{1}: LONGINT): LONGINT;
  455. PROCEDURE GetIMsg* {base, -102} (Handle{8}: HotKeyHandle; Port{9}: e.MsgPortPtr): I.IntuiMessagePtr;
  456. PROCEDURE ReplyIMsg* {base, -108} (Handle{8}: HotKeyHandle; IMsg{9}: I.IntuiMessagePtr);
  457. PROCEDURE SetGadgetAttrsA* {base, -114} (Handle{8}: HotKeyHandle; Gadget{9}: I.GadgetPtr; TagList{10}: ARRAY OF u.TagItem);
  458. PROCEDURE SetGadgetAttrs* {base, -114} (Handle{8}: HotKeyHandle; Gadget{9}: I.GadgetPtr; Tags{10}..: u.Tag);
  459. PROCEDURE DetachLabels* {base, -120} (Handle{8}: HotKeyHandle; Gadget{9}: I.GadgetPtr);
  460. PROCEDURE DrawBox* {base, -126} (RPort{9}: g.RastPortPtr; Left{0}, Top{1}, Width{2}, Height{3}: LONGINT; dri{9}: I.DrawInfoPtr; State{4}: LONGINT);
  461. PROCEDURE InitTextClass* {base, -132} (): I.IClassPtr;
  462. PROCEDURE InitGetFileClass* {base, -138} (): I.IClassPtr;
  463. PROCEDURE SetHandleAttrsA* {base, -144} (Handle{8}: HotKeyHandle; TagList{9}: ARRAY OF u.TagItem);
  464. PROCEDURE SetHandleAttrs* {base, -144} (Handle{8}: HotKeyHandle; Tags{9}..: u.Tag);
  465. PROCEDURE BeginRefresh* {base, -150} (Handle{8}: HotKeyHandle);
  466. PROCEDURE EndRefresh* {base, -156} (Handle{8}: HotKeyHandle; All{0}: I.LONGBOOL);
  467. PROCEDURE FreeWindows* {base, -228} (Chain{8}: nf.MemoryChainPtr; VAR Windows{9}: WindowList);
  468. PROCEDURE LoadGUIA* {base, -234} (Chain{8}: nf.MemoryChainPtr; name{9}: ARRAY OF CHAR; TagList{10}: ARRAY OF u.TagItem): LONGINT;
  469. PROCEDURE LoadGUI* {base, -234} (Chain{8}: nf.MemoryChainPtr; name{9}: ARRAY OF CHAR; Tags{10}..: u.Tag): LONGINT;
  470.  
  471. BEGIN
  472.   base :=  e.OpenLibrary (GTXName, GTXVersion);
  473.   IF base = NIL THEN
  474.     y.SETREG (0, I.DisplayAlert (I.recoveryAlert, "\x00\x64\x14Unable to open gadtoolsbox.library\o\o", 50));
  475.     HALT (20);
  476.   END;
  477. CLOSE
  478.   IF base # NIL THEN
  479.     e.CloseLibrary (base); base :=  NIL;
  480.   END;
  481. END GadToolsBox.
  482.